﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using RegistroMascotas.Modelo;
using Service;
using Data;

namespace RegistroMascotas
{
    public partial class login_admin_modificar : System.Web.UI.Page
    {
        private Persona _miAdmin = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                bienvenido.Text = "Bienvenido/a Sr/a " + Session["NickName"].ToString();
                string path = "";
                cuentacentro.Visible = true;
                cuentader.Visible = true;
                panelOculto.Visible = false;

                try
                {
                    _miAdmin = (Persona)PersonaDAO.traerDatosUsuario(Session["NickName"].ToString());

                    //razon social y nombre es lo mismo
                    txtNombre.Text = _miAdmin.Nombre;
                    datos_usuario.Text = _miAdmin.Usuario;

                    txtContraseña.Text = _miAdmin.Contraseña;
                    txtContraseña2.Text = _miAdmin.Contraseña;

                    txtContraseña.Attributes.Add("value", txtContraseña.Text);
                    txtContraseña2.Attributes.Add("value", txtContraseña2.Text);

                    if (_miAdmin.Imagen != null)
                    {
                        if (_miAdmin.Imagen != String.Empty)
                        {
                            System.Drawing.Image img = Validaciones.StringToImage(_miAdmin.Imagen);
                            path = "/temp/" + Guid.NewGuid() + ".jpg";
                            img.Save(Server.MapPath(path));

                            datos_foto.ImageUrl = path;
                        }
                        else
                        {
                            datos_foto.ImageUrl = "imgs/micuenta-imagen.png";
                        }
                    }
                    else
                    {
                        datos_foto.ImageUrl = "imgs/micuenta-imagen.png";
                    }
                }
                catch (Exception ex)
                {
                    cuentacentro.Visible = false;
                    cuentader.Visible = false;
                    lblNotificacion.Text = ex.Message;
                    panelOculto.Visible = true;
                    lblNotificacion.CssClass = "errores";
                }
            }
        }

        protected void btnGuardarCambios_Click(object sender, EventArgs e)
        {
            _miAdmin = (Persona)PersonaDAO.traerDatosUsuario(Session["NickName"].ToString());
            
            string nombre = _miAdmin.Nombre;
            string pass = _miAdmin.Contraseña;
            string cadenaImagen = _miAdmin.Imagen;
            bool exito = false;

            try
            {
                if (txtNombre.Text != nombre)
                {
                    nombre = txtNombre.Text;
                }

                if (txtContraseña.Text != pass)
                {
                    pass = txtContraseña.Text;
                }

                if (fuMiCuentaImagen.FileName != "" && fuMiCuentaImagen.FileName != null)
                {
                    if (Validaciones.validarSubidaDeImagen(fuMiCuentaImagen, lblError))
                    {
                        string pathTemporal = Server.MapPath("/temp/" + fuMiCuentaImagen.FileName);
                        fuMiCuentaImagen.SaveAs(pathTemporal);

                        if (cadenaImagen != Validaciones.convertirImagenToString(pathTemporal))
                        {
                            cadenaImagen = Validaciones.convertirImagenToString(pathTemporal);
                        }
                    }
                }

                exito = PersonaDAO.modificarAdmin(nombre, pass, cadenaImagen);

                if (!exito)
                {
                    throw new Exception("No se pudo modificar los datos del administrador.");
                }
                else
                {
                    Response.Redirect("~/login-admin.aspx");
                }
            }
            catch (Exception ex)
            {
                cuentacentro.Visible = false;
                cuentader.Visible = false;
                lblNotificacion.Text = ex.Message;
                panelOculto.Visible = true;
                lblNotificacion.CssClass = "errores";
            }            
        }    
    }    
}